home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
asm
/
pc370_3.exe
/
lha
/
T370.ALC
< prev
next >
Wrap
Text File
|
1988-01-03
|
28KB
|
954 lines
TITLE 'T370 - CONVERT A370 OBJ FILE TO 370 OBJECT FORMAT'
*
* PGM-ID. T370.ALC
* AUTHOR. DON HIGGINS.
* DATE. 08/13/87.
* REMARKS. THIS PROGRAM READS OBJ FILE CREATED BY A370 AND
* CREATES 370 RELOCATABLE OBJECT DECK FILE.
* MAINTENANCE.
*
* 08/16/87 COMPLETE INITIAL CODING.
* 08/19/87 COMPLETE INITAL DEBUGGING AND DOCUMENTATION REL 1.0
* 01/03/88 USE STD. OS PARM REL 1.1
*
*
*
* PARMS. T370 FILE/LCP
*
* FILE IS NAME OF FILE OF THE TYPE FILE.OBJ.
* OUTPUT OF T370 IS FILE OF THE TYPE FILE.370.
* THE OPTIONAL PARMS ARE AS FOLLOWS:
*
* L - LIST FORMATTED HEX OBJECT RECORDS IN FILE.HEX (DEFAULT OFF).
* C - LIST FORMATTED HEX OBJECT RECORDS ON CONSOLE (DEFAULT OFF).
* P - OUTPUT 370 EBCDIC OBJECT RECORDS TO FILE.370. (DEFAULT ON).
*
* CODING P ON PARM, TURNS 370 OUTPUT FILE OFF.
*
* THE FORMAT OF THE OBJECT RECORDS IS AS FOLLOWS:
*
* TYPE COLUMN DESCRIPTION
*
* ESD 01-01 X'02' EXTERNAL SYMBOL DICTIONARY ID
* 02-04 C'ESD'
* 05-10 BLANK
* 11-12 NUMBER OF BYTES OF ESD DATA
* 13-14 BLANK
* 15-16 ESD IDENTIFIER OF FIRST ITEM OR BLANK FOR LD
* 17-72 ESD ENTRIES (UP TO 3) AS FOLLOWS:
* 01-08 NAME OF SD, LD, ER
* 09-09 TYPE (HEX)
* 00 - SD
* 01 - LD
* 02 - ER
* 10-12 23 BIT ADDRESS (SD,PC,LD)
* 13-13 ALIGNMENT FACTOR (HEX)
* 07 - DOUBLEWORD
* 03 - WORD ALIGNMENT
* 01 - HALF WORD
* 00 - BYTE ALIGNMENT
* 14-16 ZERO IF LENGTH ON END RECORD
* LENGTH OF CONTROL SECTION
* IDENTIFIER OF SD CONTAINING NAME
* BLANK IF ER
* 73-80 RECORD SEQUENCE FIELD NOT USED BY LINKERS
*
* TXT 01-01 X'02'
* 02-04 C'TXT'
* 05-05 BLANK
* 06-08 24 BIT ADDRESS OF FIRST BYTE OF TEXT
* 09-10 BLANK
* 11-12 NUMBER OF BYTES OF TEXT
* 13-14 BLANK
* 15-16 ESD IDENTIFIER OF SD CONTAINING THIS TEXT
* 17-72 TEXT DATA
* 73-80 RECORD SEQUENCE FIELD NOT USED BY LINKERS
*
* RLD 01-01 X'02'
* 02-04 C'RLD'
* 05-10 BLANK
* 11-12 NUMBER OF BYTES OF RLD DATA
* 13-16 BLANK
* 17-72 RLD DATA ENTRIES AS FOLLOWS:
* 01-02 ESDID OF CESD ENTRY FOR SYMBOL BEING DEFINED
* 03-04 ESDID OF SD CONTAINING ADDRESS CONSTANT
* 05-05 FLAG FIELD (TTTTLLST)
*
* TTTT - 0000 NONBRANCH
* 0001 BRANCH
* 0011 PSEUDO REGISTER
* LL - 01 TWO BYTES
* 10 THREE BYTES
* 11 FOUR BYTES
* S - 0 POSITIVE RELOCATION
* 1 NEGATIVE RELOCATION
* T - 0 NEXT RLD ENTRY HAS POINTERS
* 1 NEXT RLD HAS SAME POINTERS
* (BYTES 01-04 OMITTED FOR NEXT)
*
* 73-80 RECORD SEQUENCE FIELD NOT USED BY LINKERS
*
* END 01-01 X'02'
* 02-04 C'END'
* 05-05 BLANK
* 06-08 24 BIT ADDRESS OF ENTRY POINT (OPTIONAL)
* 09-14 BLANK
* 15-16 ESDID OF SD CONTAINING ENTRY
* 17-28 BLANK
* 29-32 CONTROL SECTION LENGTH IF NOT IN SD
* (29=X'00' IF PRESENT)
* 33-72 BLANK
* 73-80 RECORD SEQUENCE FIELD NOT USED
*
* THE INPUT FILE FORMAT IS AN EXTENSION OF MICROSOFT
* M80 MACRO ASSEMBLER RELOCATABLE BIT STREAM FILE.
*
* FOR EXAMPLE, RUN BAT\RUNUTIL.BAT.
*
T370 CSECT
LR R12,R15
LA R13,2048(R12)
LA R13,2048(R13)
USING T370,R12
USING T370+4096,R13
LA R2,=C'T370.COM R1.1 - CONVERT PC/370 OBJ FILE TO 370 FILE$'
SVC WTO
BAL R14,INIT GET PARMS AND INITIALIZE FILES
BNZ EOJ
SR R6,R6 NO BITS
LA R7,UT1RCD+L'UT1RCD FORCE BUFFER RELOAD
LA R8,4
LA R9,UT1RCD+L'UT1RCD END OF BUFFER FOR BXH
LOOP EQU *
BAL R14,GBIT IF NEXT BIT 0, NEXT BYTE IS ABS TEXT
BNZ NOTTXT
TXTTYPE EQU * GET NEXT ABS BYTE AND STORE IN TXT RECORD
BAL R14,GBYTE
LM R1,R3,TXTREGS
STC R4,0(R1) SAVE BYTE IN TEXT TABLE
LA R1,1(R1) INC TABLE POINTER
LA R3,1(R3) INC BYTE COUNT
STM R1,R3,TXTREGS
CLR R1,R2
BL LOOP IF TXT RECORD NOT FULL, CONTINUE
BAL R14,PUTTXT
B LOOP
NOTTXT EQU * GET NEXT TWO BITS TO FORM 3 BIT TYPE OF ENTRY
LR R3,R4
SLL R3,1
BAL R14,GBIT
OR R3,R4
SLL R3,1
BAL R14,GBIT
OR R3,R4 R3 = THREE BIT TYPE
CLM R3,1,=AL1(LNKTYP)
BE LNKTYPE IF LINK TYPE, GO PROCESS ESD, RLD, ETC.
RELTYPE EQU * ELSE 16 BIT RELOCATED WORD
LA R2,=C'RELATIVE 16 BIT WORDS NOT ALLOWED IN 370 OBJ$'
SVC WTO
B EOJ
LNKTYPE EQU * BRANCH TO TYPE OF SPECIAL LINKAGE ENTRY
BAL R14,GBIT BASED ON NEXT 4 BIT TYPE CODE
LR R3,R4
SLL R3,1
BAL R14,GBIT
OR R3,R4
SLL R3,1
BAL R14,GBIT
OR R3,R4
SLL R3,1
BAL R14,GBIT
OR R3,R4 R3 = LINK TYPE
AR R3,R3
AR R3,R3
L R4,LNKRTN(R3) R4 = ADDRESS OF LINK ROUTINE LT0-LTF
BAL R14,PUTTXT FLUSH TXT BEFORE PROCESSING LINK TYPE
BR R4 JUMP
EOJ EQU * END OF FILE AT PHYSICAL EOF OR ERROR
LA R2,SYSUT1
SVC CLOSE CLOSE INPUT
CLI OPTIONP,TRUE
BNE SKPCLSP
LA R2,SYSUT2
SVC CLOSE CLOSE 370 IF OPEN
SKPCLSP EQU *
CLI OPTIONL,TRUE
BNE SKPCLSL
LA R2,SYSPRINT
SVC CLOSE CLOSE HEX IF OPEN
SKPCLSL EQU *
LA R2,=C'T370 COMPLETE$'
SVC WTO
SVC EXIT
INIT EQU * GET FILE NAMES FROM PARM AND SET OPTIONS
L R1,0(R1)
LH R0,0(R1)
SH R0,=H'1'
BNP INITERR NO FILE SPECIFIED
LA R2,3(R1) SKIP BLANK CHAR LEADING FILENAME
LR R1,R0
LR R3,R0 SAVE FOR INITFILE
FINDSLSH EQU *
CLI 0(R2),C'/'
BE SETOPT
LA R2,1(R2)
BCT R1,FINDSLSH
NOTFOUND EQU * NO OPTIONS SPECIFIED
LR R1,R3
INITFILE EQU * BUILD FILE NAMES WITH SUFFIXES
EX R1,MVCUT1
EX R1,MVCUT2
EX R1,MVCPRT
LA R2,UT1DSN(R1)
MVC 0(5,R2),UT1SFX
LA R2,UT2DSN(R1)
MVC 0(5,R2),UT2SFX
LA R2,PRTDSN(R1)
MVC 0(5,R2),PRTSFX
LA R2,=C' $'
SVC WTO
LA R2,OPTLINE DISPLAY OPTIONS SET
SVC WTO
LA R2,=C' $'
SVC WTO
LA R2,SYSUT1
SVC SEARCH ISSUE ERROR IF OBJ FILE NOT FOUND
CLM R0,1,=X'00'
BNE INITERR
LA R2,SYSUT1
SVC OPEN OPEN OBJ INPUT
CLI OPTIONP,TRUE
BNE SKPOPNP
LA R2,SYSUT2
SVC OPEN OPEN 370 OUTPUT
SKPOPNP EQU *
CLI OPTIONL,TRUE
BNE SKPOPNL
LA R2,SYSPRINT
SVC OPEN OPEN HEX OUTPUT
SKPOPNL EQU *
SR R0,R0
BR R14
INITERR EQU *
LA R2,=C'INVALID FILE NAME$'
SVC WTO
SVC EXIT
MVCUT1 MVC UT1DSN(0),TBUFF+7
MVCUT2 MVC UT2DSN(0),TBUFF+7
MVCPRT MVC PRTDSN(0),TBUFF